//// Configuration part
var num_flakes = 10; // The number of snowflakes
var intervall = 100; // the intervall the snowflakes are updated
var imgurl = "http://i1198.photobucket.com/albums/aa448/aliphoe/cipmunks.gif"; // image filename
var imgsize = 20; // no need to be exact

//// Browser Detection
var browser_dom = (document.getElementById) ? true : false;
var browser_ns4 = (document.layers) ? true : false;
var browser_ie  = (document.all) ? true : false;

var document_width = 760, document_height=540;
if (browser_ie) {
	document_width = document.body.clientWidth;
	document_height = document.body.clientHeight;
} else if (browser_dom || browser_ns4) {
	document_width  = self.innerWidth;
	document_height = self.innerHeight;
}

var pos_x = new Array();
var pos_y = new Array();
var drift_x = new Array();
var speed_y = new Array();

for (i = 0; i < num_flakes; ++ i) {
	pos_x[i] = Math.random() * (document_width - imgsize);
	pos_y[i] = Math.random() * (document_height - imgsize);
	drift_x[i] = Math.random()/2 - .25;
	speed_y[i] = 2 + Math.random()*2;
	if (browser_dom || browser_ie) {
		document.write('<div id="flake'+i+'"style="position: absolute; z-index:'+(100+i)+'; visibility: visible; left:'+Math.floor(pos_x[i])+'px;top:'+Math.floor(pos_y[i])+'px;">' +
		               '<img src="' + imgurl + '" border="0"></div>');
	} else if (browser_ns4) {
		document.write('<layer name="flake'+ i +'" left="1" top="1">' +
		               '<img src="' + imgurl + '" border="0"></layer>');
	}
}

function snowNS4() {
	for (i = 0; i < num_flakes; ++ i) {
		pos_x[i] += drift_x[i];
		pos_y[i] += speed_y[i];
		drift_x[i] += Math.random()/5 - 0.1;
		// respect window width
		if (pos_x[i] < 0) { pos_x[i] = 0; }
		if (pos_x[i] > document_width  - imgsize) { pos_x[i] = document_width - imgsize; }
		// respect window height
		if (pos_y[i] > document_height - imgsize) {
			// restart this snowflake
			pos_x[i] = Math.random() * (document_width - imgsize);
			pos_y[i] = 0;
			drift_x[i] = Math.random()/2 - .25;
			speed_y[i] = 2 + Math.random()*2;
			// update, maybe the window was resized
			document_width  = self.innerWidth;
			document_height = self.innerHeight;
		}
		// move the snow flake
		document.layers["flake"+i].top = Math.floor(pos_y[i]);
		document.layers["flake"+i].left = Math.floor(pos_x[i]);
	}
	setTimeout("snowNS4()", intervall);
}

function snowIE() {
	for (i = 0; i < num_flakes; ++ i) {
		pos_x[i] += drift_x[i];
		pos_y[i] += speed_y[i];
		drift_x[i] += Math.random()/5 - 0.1;
		// respect window width
		if (pos_x[i] < 0) { pos_x[i] = 0; }
		if (pos_x[i] > document_width  - imgsize) { pos_x[i] = document_width - imgsize; }
		// respect window height
		if (pos_y[i] > document_height - imgsize) {
			// restart this snowflake
			pos_x[i] = Math.random() * (document_width - imgsize);
			pos_y[i] = 0;
			drift_x[i] = Math.random()/2 - .25;
			speed_y[i] = 2 + Math.random()*2;
			// update, maybe the window was resized
			document_width = document.body.clientWidth;
			document_height = document.body.clientHeight;
		}
		// move the snow flake
		document.all["flake"+i].style.pixelLeft = pos_x[i];
		document.all["flake"+i].style.pixelTop = pos_y[i];
	}
	setTimeout("snowIE()", intervall);
}

function snowDOM() {
	for (i = 0; i < num_flakes; ++ i) {
		pos_x[i] += drift_x[i];
		pos_y[i] += speed_y[i];
		drift_x[i] += Math.random()/5 - 0.1;
		// respect window width
		if (pos_x[i] < 0) { pos_x[i] = 0; }
		if (pos_x[i] > document_width  - imgsize) { pos_x[i] = document_width - imgsize; }
		// respect window height
		if (pos_y[i] > document_height - imgsize) {
			// restart this snowflake
			pos_x[i] = Math.random() * (document_width - imgsize);
			pos_y[i] = 0;
			drift_x[i] = Math.random()/2 - .25;
			speed_y[i] = 2 + Math.random()*2;
			// update, maybe the window was resized
			document_width  = self.innerWidth;
			document_height = self.innerHeight;
		}
		// move the snow flake
		document.getElementById("flake"+i).style.left = Math.floor(pos_x[i])+"px";
		document.getElementById("flake"+i).style.top  = Math.floor(pos_y[i])+"px";
	}
	setTimeout("snowDOM()", intervall);
}

if (browser_ie) {
	snowIE();
} else if (browser_dom) {
	snowDOM();
} else if (browser_ns4) {
	snowNS4();
}